%% This document created by Scientific Word (R) Version 3.0

\documentclass[a4paper,twoside]{book}
\usepackage[latin1]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{latexsym}
\usepackage{graphicx}
\usepackage{amsfonts}
\usepackage{amssymb}
%TCIDATA{OutputFilter=latex2.dll}
%TCIDATA{CSTFile=book.cst}
%TCIDATA{LastRevised=Wed Mar 08 15:27:28 2000}
%TCIDATA{<META NAME="GraphicsSave" CONTENT="32">}
\setlength{\oddsidemargin}{0.cm}
\setlength{\evensidemargin}{0.cm}
\setlength{\textwidth}{13.cm}
\setlength{\textheight}{16.cm}
\setlength{\parskip}{0.15cm}
\setlength{\parindent}{0.pt}
\newenvironment{linea}{
\begin{picture}(300,10)
\line(300,0){300}
\end{picture}}{ }
\newenvironment{Ej E/S}
               {\setlength{\parskip}{0.0cm}}
               {\endlist}
\newenvironment{Lista letras}
               {\list{\alph{letra}.}{
                        \usecounter{letra}
                        \itemsep     0.0cm
                        \itemindent   0.0cm
                        \listparindent 0.0cm
                        \itemindent 0.0cm
                        \rightmargin  0.5cm
                        \leftmargin 1.0cm
                        \labelwidth 0.5cm
                        \parsep 0.0cm
                        \topsep 0.0cm
                        \parskip 0.0cm}}
               {\endlist}
\newenvironment{Programa}
               {\ttfamily\small\list{\arabic{conta}.}{\usecounter{conta}
                        \itemsep     0.0cm
                        \itemindent   0.0cm
                        \listparindent 0.0cm
                        \itemindent 0.0cm
                        \rightmargin  0.7cm
                        \leftmargin 1.0cm
                        \labelwidth 0.5cm
                        \parsep 0.0cm
                        \topsep 0.0cm
                        \parskip 0.0cm}}
               {\endlist}
\newenvironment{Programa-cuadro}
               {\begin{lrbox}{\savepar}
                \begin{minipage}[b]{13.cm}
                \ttfamily\list{\arabic{conta}.}{\usecounter{conta}
                        \itemsep     0.0cm
                        \itemindent   0.0cm
                        \listparindent 0.0cm
                        \itemindent 0.0cm
                        \rightmargin  0.7cm
                        \leftmargin 1.0cm
                        \labelwidth 0.5cm
                        \parsep 0.0cm
                        \topsep 0.0cm
                        \parskip 0.0cm}}
               {\endlist\end{minipage}\end{lrbox}\fbox{\usebox{\savepar}}}
\newenvironment{Lista guiones}{
     \begin{list}{-}{
     \setlength{\leftmargin}{0.5cm}
     \setlength{\labelwidth}{0.5cm}
     \setlength{\parsep}{0.pt}
     \setlength{\topsep}{0.0cm}
     \setlength{\parsep}{0.pt}
     \setlength{\itemsep}{0.pt}
     \setlength{\parskip}{0.pt}}
   }
   {\end{list}}
\newsavebox{\savepar}
\newenvironment{recuadro}{
\begin{lrbox}{\savepar}
\begin{minipage}[b]{13.cm}
}
{\end{minipage}\end{lrbox}\fbox{\usebox{\savepar}}}
\newenvironment{Solucion}{\newline \Large {\textbf {SOLUCI\'ON}}}{ }
\newcommand{\enunciado}{\Large{\textbf{ENUNCIADO}}}

\begin{document}
\newcounter{conta} \newcounter{letra} \setcounter{letra}{1}

{\Large {\textbf{ENUNCIADO}} -L14}

Utilizando LEX y YACC escribir un programa que traduzca sentencias del tipo
switch de C a sentencias del tipo if de C. Para simplificar el problema puede
suponerse que:

\begin{Lista guiones}
\item  Los valores que pueden aparecer en el control del bucle switch son
solamente nombres de identificadores. Los nombres de identificadores constan
de una s\'{o}la letra.

\item  Las sentencias que aparecen en cada \texttt{case} constan de una
s\'{o}lo sentencia de asignaci\'{o}n y un \texttt{break}.

\item  La parte \texttt{default} es opcional.

\item  Siempre hay, al menos, un \texttt{case} en cada \texttt{switch}.
\end{Lista guiones}

No se pueden utilizar variables globales ni de ning\'{u}n tipo que no sean las
propias de los programas LEX\ y YACC.

El siguiente es un ejemplo de entrada que debe reconocerse:

\begin{Ej E/S}
\qquad\qquad\qquad switch(x) \{

\qquad\qquad\qquad\qquad case 6 :p=4;

\qquad\qquad\qquad\qquad\qquad\qquad break;

\qquad\qquad\qquad\qquad case 8 :k=8;

\qquad\qquad\qquad\qquad\qquad\qquad break;

\qquad\qquad\qquad\qquad case 9 :l=14;

\qquad\qquad\qquad\qquad\qquad\qquad break;

\qquad\qquad\qquad\qquad default :p=5;

\qquad\qquad\qquad\qquad\qquad\qquad break;

\qquad\qquad\qquad\}
\end{Ej E/S}

La salida que debe obtenerse, para esta entrada, es la siguiente:

\begin{Ej E/S}
\qquad\qquad\qquad if(x==6) p=4;

\qquad\qquad\qquad else if(x==8) k=8;

\qquad\qquad\qquad else if(x==9) l=14;

\qquad\qquad\qquad else p=5;
\end{Ej E/S}

{\Large {\textbf{SOLUCION}} }

Programa LEX
\end{document}